Skip to content

Add Docker stack support for containerized deployments - #1

Merged
lantiumBot merged 7 commits into
lantiumBot:mainfrom
Soundstriker:main
Mar 20, 2026
Merged

Add Docker stack support for containerized deployments#1
lantiumBot merged 7 commits into
lantiumBot:mainfrom
Soundstriker:main

Conversation

@Soundstriker

@Soundstriker Soundstriker commented Mar 19, 2026

Copy link
Copy Markdown
Contributor

Summary

This PR adds a working Docker setup for Unit3Dup-G3MINI to make deployment easier on self-hosted environments such as NAS systems, Portainer, or similar stack-based setups.

Changes

  • add a root-level Dockerfile
  • add a root-level docker-compose.yml
  • add .dockerignore
  • add Docker-focused documentation in the README
  • allow config path override through UNIT3DUP_CONFIG_ROOT
  • fix HTTP cache location for containerized environments
  • fix non-root runtime support inside the container
  • move processed watcher items to the destination folder after a successful upload

Why

I wanted to run this project in Docker on a NAS without having to maintain a manual Python installation and local virtual environment.

While testing it end-to-end in a container, I ran into a couple of runtime issues:

  • the HTTP cache was using a path that was not writable in the container
  • the container needed an adjustment to work correctly as a non-root user
  • the watcher was not actually moving successfully processed items to the configured destination folder

Those fixes are included here so the Docker setup works in a more standard containerized environment.

Tested

I tested the container locally with:

  • docker compose build
  • docker compose run --rm unit3dup --help
  • docker compose run --rm unit3dup -scan /watch -noseed -noup
  • a real upload with -noseed

The test run was able to:

  • start the container correctly
  • generate the config structure
  • access the tracker
  • analyze a test release
  • fetch TMDB metadata
  • generate and upload screenshots
  • upload successfully without adding the torrent to the client
  • move the processed release to the destination folder after success

Notes

  • local secrets and personal config files are not included
  • the default compose file uses bind mounts for /config, /watch, /done, and /data
  • this keeps the existing CLI workflow intact while adding a containerized deployment option

@lantiumBot

Copy link
Copy Markdown
Owner

Wow! Thanks for that amazing PR!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants